package cn.victory.planC;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @ Description jedisUtils演示Demo
 * @ Author victory
 * @ Date 2022/5/14
 **/
public enum JedisPoolUtils {

    INSTANCE;

    private static JedisPool jedisPool;

    static {
        //1.创建连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //2.配置连接池参数
        //2.1忙时最大连接（最大连接数）
        config.setMaxTotal(8);//连接池的最大连接数。使用负数表示无极限。
        //2.2闲时最大连接（最小连接数）
        config.setMaxIdle(2);//连接池的最大空闲连接数。如果值很小的话会频繁的创建销毁连接导致性能开销增加。
        //2.*闲时最小连接数
        config.setMinIdle(0);//连接池的最小空闲连接数。确保池满足要求在空闲对象回收运行期间的最小实例数。minIdle配置值大于配置值对于maxIdle，则将使用maxIdle的值。
        //2.3超时时间
        config.setMaxWaitMillis(3000);
        //2.4获取连接池检查时机
        config.setTestOnBorrow(true);
        //3.通过连接池配置对象，设置参数
        jedisPool = new JedisPool(config, "127.0.0.1", 6379, 3000);
    }



    /**
    *  获取连接
    **/
    public Jedis getConnection(){
        if (jedisPool != null) {
            return jedisPool.getResource();
        }else {
            return null;
        }
    }
}
